package com.ctbri.JWLetter.dao.es;

import java.util.List;

import com.ctbri.JWLetter.bean.Letter;

/**
 * ES下信件数据层接口
 * 
 * @author Hogan
 * 
 */
public interface LetterDao {

	/**
	 * 无条件分页查询信件信息
	 * 
	 * @param startCount
	 * @param letterSize
	 * @return
	 */
	public List<Letter> findLettersByPage(int startCount, int letterSize);

	/**
	 * 查询信件总记录数
	 * 
	 * @return
	 */
	public long findLetterCount();

	/**
	 * 通过一个关键字查询指定记录数
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	public long findCountByOneParam(String key, Object value);
	
	/**
	 * 通过一个条件多个值查询指定记录数
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	public long findCountByMultiParams(String key, Object... values);

	/**
	 * 通过一个关键字分页查询信件
	 * 
	 * @param startCount
	 * @param pageSize
	 * @param key
	 * @param value
	 * @return
	 */
	public List<Letter> findLettersByOneParam(int startCount, Integer pageSize, String key, Object value);
	
	/**
	 * 通过一个条件多个值分页查询信件
	 * 
	 * @param startCount
	 * @param pageSize
	 * @param key
	 * @param values
	 * @return
	 */
	public List<Letter> findLettersByMultiParams(int startCount, Integer pageSize, String key, Object... values);

	/**
	 * 通过信件IDs进行查询
	 * 
	 * @param letterIds
	 * @return
	 */
	public List<Letter> findLettersByIds(List<Integer> letterIds);

	/**
	 * 通过ID查询信件信息
	 * 
	 * @param letterId
	 * @return
	 */
	public Letter findLetterById(Integer letterId);

	/**
	 * 修改信件的状态信息
	 * 
	 * @param letterId
	 * @param letterStatusDone
	 * @return
	 */
	public Integer modifyLetterStatus(Integer letterId, Integer letterStatusDone);

}
